import "@site/src/languages/highlight";

# HttpServer

**描述：**

&emsp;&emsp;代表一个HTTP服务器，可以处理请求和传输文件。

## localIP

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;服务器的本地IP地址。

**签名：**
```tl
const localIP: string
```

## wsConnectionCount

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;WebSocket连接的数量。

**签名：**
```tl
const wsConnectionCount: integer
```

## wwwPath

**类型：** 成员变量。

**描述：**

&emsp;&emsp;服务器的根静态文件目录的路径。

**签名：**
```tl
wwwPath: string
```

## start

**类型：** 函数。

**描述：**

&emsp;&emsp;在指定端口上启动HTTP服务器。

**签名：**
```tl
start: function(self: HttpServer, port: integer): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| port | integer | 要启动服务器的端口号。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 一个布尔值，表示服务器是否成功启动。 |

## startWS

**类型：** 函数。

**描述：**

&emsp;&emsp;在指定端口上启动WebSocket服务器。

**签名：**
```tl
startWS: function(self: HttpServer, port: integer): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| port | integer | 要启动服务器的端口号。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 一个布尔值，表示服务器是否成功启动。 |

## post

**类型：** 函数。

**描述：**

&emsp;&emsp;注册一个处理函数，用于处理POST请求。

**签名：**
```tl
post: function(
		self: HttpServer,
		pattern: string,
		handler: function(Request): table
	)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| pattern | string | 匹配请求的URL的模式。 |
| handler | function | 匹配模式时要调用的处理函数。函数应返回一个包含可以序列化为JSON的响应数据的Lua表。 |

## postSchedule

**类型：** 函数。

**描述：**

&emsp;&emsp;注册一个处理函数，用于在协程中处理POST请求。

**签名：**
```tl
postSchedule: function(
		self: HttpServer,
		pattern: string,
		handler: function(Request): table
	)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| pattern | string | 要匹配的URL模式。 |
| handler | function | 匹配模式时要调用的处理函数。函数应返回一个包含可以序列化为JSON的响应数据的字典。并且函数将在协程中运行。 |

## upload

**类型：** 函数。

**描述：**

&emsp;&emsp;注册一个处理函数，用于处理文件上传的多部分POST请求。

**签名：**
```tl
upload: function(
		self: HttpServer,
		pattern: string,
		acceptHandler: function(req: Request, filename: string): (string | nil),
		doneHandler: function(req: Request, filename: string): boolean
	)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| pattern | string | 要匹配的URL模式。 |
| acceptHandler | function | 匹配模式时要调用的处理函数。函数应返回要将文件保存为的文件名，或者返回 `null` 来拒绝文件。 |
| doneHandler | function | 匹配模式时要调用的处理函数。函数应返回 `true` 来接受文件，或者返回 `false` 来拒绝文件。 |

## stop

**类型：** 函数。

**描述：**

&emsp;&emsp;停止服务器，包括已启动的HTTP服务器和WebSocket服务器。

**签名：**
```tl
stop: function(self: HttpServer)
```